package com.reebake.ideal.permission.entity;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

 /**
 * 菜单
 * 
 */
@Schema(name = "菜单", description = "")
@TableName("idl_menu")
@Data
public class Menu implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;

    /** 主键 */
    @Schema(name = "主键", description = "")
    @TableId
    private String menuId;

    /** 名称;名称 */
    @Schema(name = "名称", description = "名称")
    private String name;

    /** 标题;i18n键值或标题 */
    @Schema(name = "标题", description = "i18n键值或标题")
    private String title;

    /** 菜单类型 */
    @Schema(name = "菜单类型", description = "")
    private String menuType;

    /** 父菜单编号 */
    @Schema(name = "父菜单编号", description = "")
    private String parentId;

    /** 权限码 */
    @Schema(name = "权限码", description = "")
    private String accessCode;

    /** 路径 */
    @Schema(name = "路径", description = "")
    private String path;

    /** 组件;views下路径，以/起头，父节点填BasicLayout */
    @Schema(name = "组件", description = "views下路径，以/起头，父节点填BasicLayout")
    private String component;

    /** 图标 */
    @Schema(name = "图标", description = "")
    private String icon;

    /** 固定标签 */
    @Schema(name = "固定标签", description = "")
    private Boolean affixTab;

    /** 是否隐藏 */
    @Schema(name = "是否隐藏", description = "")
    private Boolean hiddenInMenu;

    /** 跳转地址 */
    @Schema(name = "跳转地址", description = "")
    private String redirect;

    /** 是否页面缓存 */
    @Schema(name = "是否页面缓存", description = "")
    private Boolean keepAlive;

    /** iframe地址 */
    @Schema(name = "iframe地址", description = "")
    private String iframeSrc;

    /** 外链地址 */
    @Schema(name = "外链地址", description = "")
    private String link;

    /** 菜单参数 */
    @Schema(name = "菜单参数", description = "")
    private String query;

    /** 在新窗口打开页面 */
    @Schema(name = "在新窗口打开页面", description = "")
    private Boolean openInNewWindow;

    /** 不使用基础布局 */
    @Schema(name = "不使用基础布局", description = "")
    private Boolean noBasicLayout;

    /** 是否忽略权限，直接可以访问 */
    @Schema(name = "是否忽略权限，直接可以访问", description = "")
    private Boolean ignoreAccess;

    /** 排序顺序 */
    @Schema(name = "排序顺序", description = "")
    private Integer orderNo;

    /** 状态 */
    @Schema(name = "状态", description = "")
    private String status;

    /** 是否叶子 */
    @Schema(name = "是否叶子", description = "")
    private Boolean isLeaf;

    /** 备注 */
    @Schema(name = "备注", description = "")
    private String remark;

    /** 删除标识 */
    @Schema(name = "删除标识", description = "")
    @TableLogic
    private Boolean deleteFlag;

    /** 租户号 */
    @Schema(name = "租户号", description = "")
    private String tenantId;

    /** 乐观锁 */
    @Schema(name = "乐观锁", description = "")
    private Integer revision;

    /** 创建人 */
    @Schema(name = "创建人", description = "")
    @TableField(fill = FieldFill.INSERT)
    private String createdBy;

    /** 创建时间 */
    @Schema(name = "创建时间", description = "")
    @TableField(fill = FieldFill.INSERT)
    private Date createdTime;

    /** 更新人 */
    @Schema(name = "更新人", description = "")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updatedBy;

    /** 更新时间 */
    @Schema(name = "更新时间", description = "")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updatedTime;

}